package org.eiahe.hr.attendance.service;

import org.eiahe.hr.attendance.domain.bo.SpecialAttendanceRuleBo;
import org.eiahe.hr.attendance.domain.vo.SpecialAttendanceRuleVo;
import org.ehe.common.mybatis.core.page.PageQuery;
import org.ehe.common.mybatis.core.page.TableDataInfo;

import java.util.Collection;
import java.util.List;

/**
 * 特殊员工考勤规则Service接口
 *
 * @author zhangnn
 */
public interface ISpecialAttendanceRuleService {

    /**
     * 查询特殊员工考勤规则
     */
    SpecialAttendanceRuleVo queryById(Long ruleId);

    /**
     * 查询特殊员工考勤规则列表
     */
    TableDataInfo<SpecialAttendanceRuleVo> queryPageList(SpecialAttendanceRuleBo bo, PageQuery pageQuery);

    /**
     * 查询特殊员工考勤规则列表
     */
    List<SpecialAttendanceRuleVo> queryList(SpecialAttendanceRuleBo bo);

    /**
     * 新增特殊员工考勤规则(提交申请)
     */
    Boolean insertByBo(SpecialAttendanceRuleBo bo);

    /**
     * 修改特殊员工考勤规则
     */
    Boolean updateByBo(SpecialAttendanceRuleBo bo);

    /**
     * 校验并批量删除特殊员工考勤规则信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids);

    /**
     * 审批通过
     */
    Boolean approve(Long ruleId, String approvalComment);

    /**
     * 审批驳回
     */
    Boolean reject(Long ruleId, String approvalComment);

    /**
     * 撤销申请
     */
    Boolean cancel(Long ruleId);

    /**
     * 到期提醒(定时任务调用)
     */
    void remindExpiring(Integer days);
}
